#include <iostream>
#include <vector>
#include <unordered_map>
#include <string>
using namespace std;

//算法能力强训第一天
//1.找出2的个数
//2.两数组的交集
//3.点击消除
//int main()
//{
//	int L, R;
//	int res = 0;
//	cin >> L >> R;
//	while (L <= R) {
//		int tmp = L;
//		while (tmp) {
//			if (tmp % 10 == 2) {
//				++res;
//			}
//			tmp /= 10;
//		}
//		++L;
//	}
//	cout << res;
//	return 0;
//}

class Solution
{
public:
	vector<int> solution1(vector<int> v1, vector<int> v2)
	{
		// unordered_map<int, int> hashtable1, hashtable2;
		// vector<int> res;
		// for (int i = 0, j = 0;i < v1.size() || j < v2.size();++i, ++j) {
		// 	if (i < v1.size()) {
		// 		hashtable1[v1[i]]++;
		// 	}
		// 	if (j < v2.size()) {
		// 		hashtable2[v2[j]]++;
		// 	}
		// }
		// unordered_map<int, int>::iterator iter = hashtable1.begin();
		// for (;iter != hashtable1.end();++iter) {
		// 	if (hashtable2.count(iter->first)) {
		// 		res.emplace_back(iter->first);
		// 	}
		// }
		// return res;

        bool arr[1001] = { false };
		vector<int> res;
		for (int i = 0;i < nums1.size();++i) {
			arr[nums1[i]] = true;
		}
		for (int j = 0;j < nums2.size();++j) {
			if (arr[nums2[j]]) {
				res.emplace_back(nums2[j]);
				arr[nums2[j]] = false;
			}
		}
		return res;
	}

};
int main()
{
	string s;
	cin >> s;
	string res;
	for (int i = 0;i < s.length();++i) {
		if (res.empty() || res.back() != s[i]) {
			res.push_back(s[i]);
		}
		else if(res.back() == s[i]) {
			res.pop_back();
		}
	}
	if (res.empty()) {
		cout << 0;
	}
	else {
		cout << res;
	}
	return 0;
}